package matriz;

import java.util.ArrayList;
import java.util.NoSuchElementException;

import celda.Celda;

public class Matriz {
	
	private ArrayList<ArrayList<Celda>> contenedor;
	private int filas;
	private int columnas;	
	
	//Constructor: matriz con tamanio especificado (filas x columnas)
	//Se inicializa con elementos Celda
	public Matriz(int filas, int columnas) {
		this.filas = filas;
		this.columnas = columnas;
		this.contenedor = new ArrayList<ArrayList<Celda>>();		
		for (int i = 0; i < filas; i++) {
			ArrayList<Celda> fila = new ArrayList<Celda>();
			this.contenedor.add(fila);
			for (int j = 0; j < columnas; j++) {
				fila.add(new Celda());
			}			
		}		
	}
	
	//Devuelve el elemento en la posicion fila/columna
	public Celda getElemento(int fila, int columna) throws NoSuchElementException {
		return this.contenedor.get(fila).get(columna);
	}
	
	//Setea unaCelda en la posicion fila/columna 
	public void setElemento(int fila, int columna, Celda unaCelda) {
		this.contenedor.get(fila).set(columna, unaCelda);
	}
	
	//Elimina el elemento en la posicion fila/columna (lo setea null)
	public void removeElemento(int fila, int columna) {
		this.contenedor.get(fila).set(columna, null);
	}
	
	//Crea un iterador para la matriz
	public Iterador iterador() {
		return new Iterador(this, filas, columnas);
	}
}

